
import random
import time



'''
购物系统业务需求V2.0：
1.	现在用户在进商场之前需要从10张优惠券中，随机抽取一张优惠券。
比如抽到一个空凋的8折优惠券，后面在购物的过程中，空凋就可以按照8折后的价格来购买。
2.	优化购物小条的人性化打印。
购物时间，卡余额，购物数量，购买总商品的价值。
3.	添加退货功能。在购买途中，某个商品不要了，退回到购物架中！
'''




#结束购物的打印类
class end():
    def __init__(self,car_list,money,bg):
        car_set = set(car_list)
        print("本次购买了：")
        for i in car_set:
            print(i, car_list.count(i), "份")
        print("花费了：" '%.2f'%(bg - money), "元")
        print("卡内余额：", '%.2f'%money, "元")
        print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))

#退货的方法类
class tuihuo():
    def __init__(self,car_list,goods_list,money,f1,coupons_g,coupons_r,coupons_y):
        self.car_list = car_list
        self.good_list = goods_list
        self.money = money
        self.f1 = f1
        self.coupons_y = coupons_y
        while True:
            p3_car = p_car(self.car_list)
            user_t = int(input('\n'"请输入需要退货的商品：")) - 1
            if car_list[user_t]=='优惠'+coupons_g[0] and user_t < len(car_list) and coupons_y==1:
                print("你把", car_list[user_t], "移除了购物车")
                for i in range(0, len(goods_list), 1):
                    # b=goods_list[i]
                    if '优惠'+goods_list[i] == car_list[user_t]:
                        self.money = self.money + rise_list[i]*coupons_r[0]*0.1
                        print(self.money)
                self.car_list.pop(user_t)
                self.coupons_y=0;
                f = input("还要继续退货吗？退货请输入t或T，购物请输入任意键，结束请输入Q或q：")
                if f == 't' or f == 'T':
                    continue
                elif f == 'q' or f == 'Q':
                    self.f1 = 't'
                    break
                else:
                    break
            elif user_t < len(car_list):
                print("你把", car_list[user_t], "移除了购物车")
                for i in range(0, len(goods_list), 1):
                    # b=goods_list[i]
                    if goods_list[i] == car_list[user_t]:
                        self.money = self.money + rise_list[i]
                        print(self.money)
                self.car_list.pop(user_t)
                f = input("还要继续退货吗？退货请输入t或T，购物请输入任意键，结束请输入Q或q：")
                if f == 't' or f == 'T':
                    continue
                elif f == 'q' or f == 'Q':
                    self.f1 = 't'
                    break
                else:
                    break
            else:
                print("购物车没有这个东西！")
                break



#打印购物车的方法类
class p_car():
    def __init__(self, car_list):
        for i in range(0, len(car_list), 1):
            print("(", i + 1, ")", car_list[i].ljust(6), end='\t\t')
            y = (i + 1) % 3
            if y == 0:
                print()



bg=money=23
f1=''
goods_list=['可乐','啤酒','薯片','果冻','洗衣粉','拖把'] #商品
rise_list=[3,5,6,4,12,36]  #价格
car_list=[]  #购物车
print("本超市售卖的商品：")
for i in range(0,len(goods_list),1):
    print("(",i+1,")",goods_list[i].ljust(6),rise_list[i],"元",end='\t\t')
    y=(i+1)%3
    if y==0:
        print()
coupons_z=input("现在你可以抽取一个优惠券，输入任意键开始")
coupons_n=1
coupons_y=1
r=(3,4,5,6,6,7,7,8,8,8)
coupons_g=random.sample(goods_list,1)  #商品
coupons_r=random.sample(r,1)          #折扣
print("你抽到了一张",coupons_g[0],int(coupons_r[0]),"折优惠券")
while True:
    user_c=int(input('\n'"请输入购买的商品："))-1
    if user_c<len(goods_list):
        #b=goods_list[user_c]
        if goods_list[user_c]==coupons_g[0] and money>rise_list[user_c] and coupons_n==1:   #优惠券购物
            print(goods_list[user_c])
            #a = goods_list[user_c]
            car_list.append('优惠'+goods_list[user_c])
            l=int(rise_list[user_c])
            money = money - rise_list[user_c] * coupons_r[0]*0.1
            print("恭喜，购买成功！您的卡余额还剩:", '%.2f'%money)
            coupons_n=0
            s = input("是否继续购买？继续请输入任意键，退货请按t或T，结束请输入Q或q：")
            if s == 'Q' or s == 'q':
                p = end(car_list, money, bg)
                break
            elif s == 't' or s == 'T':
                # p1_car = p_car(car_list)  # 用打印购物车的方法
                t1_car = tuihuo(car_list, goods_list, money, f1,coupons_g, coupons_r,coupons_y)  # 用退货的方法
                f1 = t1_car.f1
                money=t1_car.money
                car_list=t1_car.car_list
                # 直接写的退货流程
                if f1 == 't':
                    p = end(t1_car.car_list, t1_car.money, bg)  # 用打印小票的方法
                    break
                else:
                    continue
            else:
                continue
        elif money>rise_list[user_c]:                    #普通购物
            print(goods_list[user_c])
            a=goods_list[user_c]
            car_list.append(a)
            money=money-rise_list[user_c]
            print("恭喜，购买成功！您的卡余额还剩:",'%.2f'%money)
            print(car_list)
            s = input("是否继续购买？继续请输入任意键，退货请按t或T，结束请输入Q或q：")
            if s == 'Q' or s == 'q':
                p =end(car_list,money,bg)
                break
            elif s =='t' or s=='T':
                # p2_car=p_car(car_list)   #用打印购物车的方法
                t_car=tuihuo(car_list,goods_list,money,f1,coupons_g, coupons_r,coupons_y)    #用退货的方法
                f1=t_car.f1
                money=t_car.money
                car_list=t_car.car_list
                #直接写的退货流程
                if f1=='t':
                    p = end(t_car.car_list, t_car.money, bg)    #用打印小票的方法
                    break
                else:
                    continue
            else:
                continue
        else:                                                            #钱不够
            print("穷鬼，钱不够！请到其他超市购买！")
            s = input("是否继续购买？继续请输入任意键，结束请输入Q，q：")
            if s == 'Q' or s=='q':
                p = end(car_list, money, bg)    #用打印小票的方法
                break
            else:
                continue
    else:                                                       #没有商品
        print("没有这个商品，别瞎弄！")
        s = input("是否继续购买？继续请输入任意键，结束请输入Q，q：")
        if s == 'Q' or s == 'q':
            p = end(car_list, money, bg)   #用打印小票的方法
            break
        else:
            continue










